Django前后端分离开发,实现跨域CORS

您所在的位置:网站首页 django websocket 前后端分离 Django前后端分离开发,实现跨域CORS

Django前后端分离开发,实现跨域CORS

2023-10-08 21:49| 来源: 网络整理| 查看: 265

这是我参与更文挑战的第7天,活动详情查看: 更文挑战

为什么要实现跨域CORS?

在前后端分离开发时,如果前后端非同源(协议/域名/端口不同),无法直接访问,需要使用CORS来解决。详见 初识CORS(AJAX跨源请求解决方案)

Django如何实现跨域CORS?

通过插件django-cors-headers,简单设置后就可以快速实现。django-cors-headers主要利用Django的中间件,在每次请求前先进行CORS相关的处理。

django-cors-headers使用流程 安装插件 pip install django-cors-headers 添加应用 INSTALLED_APPS = ( ... 'corsheaders', ... ) 添加中间件 MIDDLEWARE = [ ..., 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', ..., ] # CorsMiddleware应该放在尽可能前的位置,尤其是在任何可以生成响应的中间件之前 # 例如 DjangoCommonMiddleware,如果不在此之前,它将无法将 CORS 标头添加到这些响应中。 设置 在setting.py中添加相关配置信息 # 最简单的配置 # 凡是出现在白名单中的域名,都可以访问后端接口 CORS_ALLOWED_ORIGINS = ( '127.0.0.1:8080', 'localhost:8080', 'www.example.com:8080', 'api.example.com:8000' ) # CORS_ALLOW_CREDENTIALS 指明在跨域访问中,后端是否支持对cookie的操作。 CORS_ALLOW_CREDENTIALS = True # 允许携带cookie # 配置详解 # [ 必须项 ] 至少包含一个访问控制:CORS_ALLOWED_ORIGINS、CORS_ALLOWED_ORIGIN_REGEXES、CORS_ALLOW_ALL_ORIGINS ## 发出访问请求的源列表,默认为[] CORS_ALLOWED_ORIGINS = [ "https://example.com" , "https://sub.example.com" , "http://localhost:8080" , "http://127.0.0.1:9000" ] ## 发出访问请求的使用正则表达式匹配的源列表,默认为[] CORS_ALLOWED_ORIGIN_REGEXES = [ r"^https://\w+\.example\.com$" , ] ## 是否允许所有来源,默认为False ### 如果True,则允许所有来源。其他限制允许来源的设置将被忽略【危险行为】 CORS_ALLOW_ALL_ORIGINS # [ 可选项 ] ## 限制部分URL使用CORS:限制将发送 CORS 标头的 URL 的正则表达式。 ### 默认为r'^.*$',即匹配所有 URL。当只需要站点的一部分使用 CORS 时很有用,例如/api/. CORS_URLS_REGEX = r'^/api/.*$' ## 允许用于实际请求的 HTTP 动词列表 CORS_ALLOW_METHODS = [ 'DELETE' , 'GET' , 'OPTIONS' , 'PATCH' , 'POST' , 'PUT' , ] ## 可使用的非标准 HTTP 标头列表 CORS_ALLOW_HEADERS = [ 'accept' , 'accept-encoding' , 'authorization' , 'content-type' , 'dnt' , 'origin' , 'user-agent' , 'x-csrftoken' , 'x-requested-with' , ] ## 要向浏览器公开的 HTTP 标头列表,默认为 [] CORS_EXPOSE_HEADERS = [] ## 非简单请求免预检时间:单位为秒,默认86400(一天);为0则不会发送,即不免预检 CORS_PREFLIGHT_MAX_AGE = 86400 ## 请求是否包含Cookie:如果True,将允许 cookie 包含在跨站点 HTTP 请求中。默认为False. CORS_ALLOW_CREDENTIALS = true


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3